home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC Media 20
/
PC MEDIA CD20.iso
/
share
/
prog
/
a_debug1
/
debug1.txt
< prev
next >
Wrap
Text File
|
1995-03-05
|
5KB
|
158 lines
En el VCL viene una referencia a un articulo sobre
antidebug, si no es el mismo te agradecería que, si lo
consigues, lo pongas por aquí.
Como veo que buscais técnicas anti-debugger, yo tengo algunos, he aquí un
resumen de algunas técnicas y metodos para evitarlas. :-))
===8<==========================================
1. Preventive actions:
----------------------
1.1. Interrupt disable:
1.1.1. Hardware masking of interrupt:
Deshabiltar la IRQ1 del teclado (port 21:=port 21 or 2)
POR QUÉ NO: inútil contra Soft-ICE.
1.1.2. Software masking of interrupt:
Poner vectores de interrupción que no usas a cero (ej,
int 3 y demás).
1.1.3. Vector manipulation
Usar los vectores int 01 e int 03 para datos del programa (ej,
para una rutina de desencriptación).
1.1.4. Interrupt replacement
Copiar vectores de interrupción que usas (ej, int 16 ó int 21) a
los vectores int 01 e int 03 y usar éstos en lugar de aquellos.
(además el que int 03 sea un código de un sólo byte, "cc", hace
que sea difícil sustituirlo por la int xx original, de dos bytes
"cd xx").
POR QUÉ NO: A los depuradores V86 no les afecta.
1.2. Time watch:
Poner un bucle que espera a que cambie el contador de tiempo del
DOS, "util contra programas como el TD que deshabilitan todas las
interrupciones salvo cuando se está ejecutando el programa"
"Sirve contra RUN, no TRACE". (mi no comprender :-? :-?)
POR QUÉ NO: Cuando se "cuelga" en el bucle, interrumpes, ves lo que pasa,
y machacas el bucle con NOPs.
1.3. Fool the debugger:
Saltar dentro del código de una instrucción que a su vez contiene
la instrucción que quieres ejecutar:
104: eb 02 jmp 108
106: c6 06 e6 21 00 mov byte ptr [21e6],90
( 108: e6 21 90 out 21, al / nop )
POR QUÉ NO: le dices que te desensamble a partir de cs:ip.
1.4. Check CPU Flags:
"Bueno contra depuradores en modo real."
Pones la TF (bit ocho de flags) a 0 en un punto del programa y
luego la compruebas en otro punto. Si está a 1 estás bajo un
depurador.
POR QUÉ NO: inútil en V86
1.5. Cause debugger to stop execution:
Espolvorear int 3 en el código, sobre todo dentro de bucles.
POR QUÉ NO: Es fácil pisar la int 03 con un NOP. A muchos depuradores
se les puede indicar que no paren ante una int 03.
1.6. Halt computer using stack:
Apuntar ss:sp a un trozo de código que no utiliza la pila.
Si se depurando, el depurador que no utilice su propia pila
machacará el código.
POR QUÉ NO: Los depuradores sí utilizan su propia pila.
1.7. Halt TD386 V8086 mode:
TD386 no usa int 0 para la división por cero. TD386 detecta un
fallo de división y aborta el programa, mientras que sin TD386
basta con apuntar la int 0 a la instrucción siguiente a la
división por cero para recuperar el control.
POR QUÉ NO: No es verdad. Eso no le hace nada al TD386.
1.8. Halt any V8086 process:
Apuntar el vector int 0d al código y causar una excepción de
protección. El programa funcionará en modo real, pero no en
V8086.
POR QUÉ NO: Es muy fácil cambiar el código ilegal y además te cargas la
compatibilidad con muchos sistemas.
2. Self-modifying code:
-----------------------
2.1. Encryptive/decryptive algorithm:
Desencriptas un código antes de ejecutarlo. Si el depurador ha
metido un byte int 03 al desencriptarlo se cambiará por basura.
100 mov bx, 0971
103 mov di, 0110
106 xchg ax,cx
107 xchg ax,cx
108 xor byte ptr [cs:di],97
10c inc di
10d dec bx
10e jnz 106
110 07 pop es ; cambiará a 90 NOP
111 pop es
2.2. Self-modifying code:
2.2.1. Simple self-modification:
Modificar el código que vas a ejecutar para borrar los int 03 que
ponga el depurador:
100 call 0107 ; queremos saltarnos esta subrutina
103 cd 20 int 20 ; aquí el depurador pone int 3
105 int 21
107 mov [word ptr 103],4cb4 ; "mov ah,4c"
10d ret
POR QUÉ NO: Depuradores V86 te dejan usar breakpoints hardware, sin
utilizar int 03. (Tanto para 2.1 como para 2.2.1)
2.2.2. The Running Line (self-decrypting):
< Este lo puse antes :-) >
Créditos:
ANTIDEPURADOR:
Anti Debugging Tricks
By:
Inbar Raz
Assistance by Eden Shochat and Yossi Gottlieb
Release number 5
- - - -
ANTIANTIDEPURADOR ("POR QUÉ NO"):
Sun 24 Jan 93
By: Michael Forrest
Hi. Here's release 1 of the Anti-Anti Debugging Tricks article.